It is often necessary or desirable to transfer data between data processing systems, such as digital processing systems. Typically, the transfer of data requires a modem or other interface to convert from the digital data on a digital processing system to data in other formats, such as analog formats. A typical example involves the use of a computer system with a modem at one location to transfer a data file from that computer system to a remotely located computer system which has its own modem or interface. The transfer of large data files, such as digital pictures, requires considerable time even with high-speed analog modems. The use of other types of modems is less common, although these modems do tend to improve the speed of file transfers between computer systems. Still, considerable time can be required to transfer large files even with these other types of modems.
Typically, the two computer systems establish a communication link and then one computer system begins sending a file or other data to the other computer system. Sometimes, the data is encrypted. Also, sometimes, a hashed or digested version of the file may be transferred with the file in order to allow the recipient of the file to authenticate the validity of the file as received at the second computer system.
These prior approaches to transferring data often result in the transmission of unnecessary data between the computer systems. As a result, considerable time can be spent transferring unneeded data. For example, a file could be transferred from a source computer system to a recipient computer system while that same file already exists on the recipient computer system as no attempt is made to determine whether the recipient already has the file. It should be noted that one solution may involve checking for the file name on the recipient system before sending the file; however, file names can be changed so that a check for the file name may not yield the correct answer. Moreover, even if the file names are not changed, it is still possible to have the same file names for different files by coincidence.
Thus it is desirable to provide a method and apparatus for eliminating the transfer of data between digital processing systems when the transfer is not necessary.
In some cases, after a first application program has been executed to establish a communication link between computer systems, it is desirable for a second application program to receive data transferred via the communication link. However, in certain types of communication protocols (e.g., transmission control protocol/internet protocol (TCP/IP)), each data packet transmitted across a communication link includes information identifying the application program used to initiate the communication link, and data received on the link is forwarded to the identified application program. As a result, even if a first application program has already established a communication link to a remote computer system, it is usually necessary for the second application program to establish its own communication link to the remote system to receive data. This results in wasted effort and can be particularly annoying to a computer-user that has already supplied, for example, authentication information in order to establish the link between the first application program and the remote computer system. Typically, the computer-user will have to re-enter the same identification information entered to establish the first link, and perform the same steps to authenticate the identification information as performed to authenticate the identification information entered to establish the first link.
Even when the communication protocol does not require information relating data packets to one another or information identifying a particular client application as the endpoint of a communication, an application-generated identifier may still be included in the payload of a data packet to establish that the packet is from a previously authenticated source. For example, in response to an authenticated request to download data, a server could generate a session identifier (e.g., a time-stamp and the requesting client's network address wrapped according to a predetermined format), supply the session identifier to the client application that issued the request and then require the client application to include the session identifier in other communications associated with the request. Because the session identifier is located in the payload and not in a header location defined by a particular protocol, it is difficult for other client applications (including those on other machines) to intercept the session identifier and masquerade as the original requester. While this makes the authenticated download operation somewhat more secure, it also makes it more difficult for a second client application to assume the communication session initiated by the first application. Again, the computer-user may have to re-enter identification information and re-authenticate the identification information before receiving requested download in a second application program.
What is needed is a method and apparatus for allowing the second application program to communicate with the remote computer system without having to re-enter identification or authentication information.